/******************************************************************************************
版权所有 2021-2021, 长春理工大学C&I实验室。保留所有权利。
文件名：mpp40_venc.h
作者：Wind    版本：V1.0    日期：2021.1.8
文件描述：
    头文件。
历史修改记录：
1. 2021-1-8:V1.0 Wind
创建。

2. 2021-6-19:Wind
在7Cv1工程的基础上删除了有关JPEG编码部分。
******************************************************************************************/
#ifndef MPP40_VENC__
#define MPP40_VENC__
//+------------------------------------------------------------------------------------------+
//|                                         头文件包含
//+------------------------------------------------------------------------------------------+
/*|*/#include <stdbool.h>
/*|*/#include "hi_common.h"
/*|*/#include "hi_comm_venc.h"
//+------------------------------------------------------------------------------------------+
//|                                          数据类型
//+------------------------------------------------------------------------------------------+
/*|*/typedef enum hiPIC_SIZE_E
/*|*/{
/*|*/    PIC_VGA,   /*  640 * 480  */
/*|*/    PIC_720P,  /* 1280 * 720  */
/*|*/    PIC_1080P, /* 1920 * 1080 */
/*|*/}PIC_SIZE_E;
//|
/*|*/typedef enum
/*|*/{
/*|*/    RC_CBR=0,
/*|*/    RC_VBR,
/*|*/    RC_CVBR,
/*|*/    RC_AVBR,
/*|*/    RC_QPMAP,
/*|*/    RC_FIXQP,
/*|*/    RC_QVBR
/*|*/}RC_MODE;
//|
//|  ----------------------------------------
//|  L_VENC_CreateChnAndStart函数参数的数据类型
//|  ----------------------------------------
/*|*/typedef struct
/*|*/{
/*|*/    VENC_CHN        VencChn;     //创建的VENC通道号
/*|*/    PAYLOAD_TYPE_E  enPayLoad;   //编码荷载类型（PT_H264或PT_H265）
/*|*/    PIC_SIZE_E      enSize;      //编码尺寸，仅支持1080P以下的典型几种
/*|*/    VENC_GOP_MODE_E enGopMode;   //GOP模式
/*|*/    HI_U32          u32Gop;      //GOP间隔，不同模式下GOP间隔表示的含义不同
/*|*/    RC_MODE         enRcMode;    //RC模式
/*|*/    HI_U32          u32FrameRate;//RC输出帧率
//|  ----------------------------------------
//|    ————————————关于Profile————————————
//|    编码的等级
//|    H.264取值范围：[0,3]
//|    0：Baseline
//|    1：Main Profile
//|    2：High Profile
//|    3：svc-t
//|    H.265取值范围：[0,1]
//|    0：Main Profile
//|    1：Main 10 Profile ——> 3516EV200不支持
//|    
//|    ——《参考》P982~P983、P794~P795
//|  ----------------------------------------
/*|*/    HI_U32           u32Profile;
/*|*/    HI_S32           s32FrameNumber;//编码帧数
/*|*/}VENC_PARA_S;
//+------------------------------------------------------------------------------------------+

#ifdef __cplusplus
extern "C" {
#endif
//+------------------------------------------------------------------------------------------+
//|                                       函数/变量声明
//+------------------------------------------------------------------------------------------+
/*|*/int  venc_create_chn_and_start(const VENC_PARA_S *pVENCpara);
/*|*/void venc_deinit(VENC_CHN vencchn);
/*|*/void venc_getstream(bool *get_stream_enable, void (*pstreamfuction)(int i, VENC_STREAM_S *pstStream));
//+------------------------------------------------------------------------------------------+
#ifdef __cplusplus
}
#endif /* End of __cplusplus*/

#endif /* End of #define MPP40_VENC__*/
